Client/server network operating systems allow networks to centralize functions and applications in one or more dedicated servers. The server becomes the heart of the system providing access to resources by individual client programs. In an object-oriented environment the server may store objects. An object is a self-contained entity that consists of both data and functions to manipulate the data. Objects may be either parent objects or child objects where child objects inherit the data structure of the parent object and add additional data elements or functions.
In an object-oriented client/server network the objects that are on the server are managed by server software which responds to requests for objects from client software that request access to the object information. A client wishing to retrieve information from an object on the server makes a request, which is sent using common network streaming techniques to the server software. The server software responds by accessing the requested object. The server software streams the object to the client by sending the parent object and all of the child objects in a particular order known to the client. This system of streaming data works so long as the client and the server are both aware of the parent object, all inherited child objects, and all of the fields of the inherited objects that are being streamed along with the order of the data being streamed. Whenever the client software or the server software is upgraded to a new version in which new fields have been added within either a child or parent object, the non-updated software may lose data or malfunction because the data being sent is not expected and therefore the receiver is not capable of parsing the data. One solution that may be implemented is that of revision locking. Revision locking causes a program which has a different revision identifier from the program which it is either sending or receiving object information to be locked so that no data is exchanged. This is overly restrictive when only minor modifications have been made between different versions of software.